package edu.unice.simul.controleur;

import edu.unice.simul.modele.ConfigModel;
import edu.unice.simul.modele.contenus.mobiles.Humain;
import edu.unice.simul.vue.ConfigFrame;
import edu.unice.simul.vue.initialisation.modes_dessin.BlockType;

/**
 * Contrôleur de la configuration de la simulation (définition des paramètres de
 * chaque humain).
 * 
 * @author Romain Ciaccafava
 * 
 */
public class ConfigControleur {
	private final ConfigFrame view;
	private ConfigModel model;

	/**
	 * Créée le contrôleur à partir de la description de la pièce récupérée depuis
	 * l'initialisation de la pièce.
	 * 
	 * @param world
	 *          tableau à 2 dimension décrivant la pièce
	 */
	public ConfigControleur(BlockType[][] world) {
		this.model = new ConfigModel(world);
		this.view = new ConfigFrame(this);
		model.addConfigListener(view);
		model.fireConfigChanged();
	}

	/**
	 * Démare la simulation
	 */
	public void start() {
		view.setVisible(false);
		model.start();
	}

	/**
	 * Récupère la liste des humains depuis le modèle
	 */
	public Humain getHumain(int selection) {
		return model.getHumains().get(selection);
	}

	/**
	 * Génère aléatoirement les paramètres des humains
	 */
	public void generate() {
		model.generate();
	}
}
